Analysis of stimulation experiments.

library(Seurat)
library(dplyr)
library(ggplot2)
library(scClustViz)
library(SeuratWrappers)

Load integrated object. This object has been integrated with CCA, because there was lots of batch effect between the 0hr tissue and the other two experiments (which merged quite well).

load("~/Dropbox/Zoe/scf_version/analysis/healthy_sc/seurat_objects/no_dropletQC/3391/integrated_3391_stimulation_pmaio_unstim_downsampled_cca_kanchor5_scClustViz.RData")
# Set identity
Idents(scSeurat) <- "integrated_snn_res.0.4"

Check out the UMAP of clusters, original identities, and refined SCINA labels.

DimPlot(scSeurat, label = TRUE)

DimPlot(scSeurat, group.by = "tissue_type", label = FALSE)

DimPlot(scSeurat, group.by = "scina_labels", label = TRUE) & NoLegend()

pdf(file = './figures/stimulation/downsampled_UMAP.pdf')
DimPlot(scSeurat, label = TRUE)
dev.off()
null device 
          1 
pdf(file = './figures/stimulation/downsampled_tissue_type_UMAP.pdf')
DimPlot(scSeurat, group.by = "tissue_type") +
  ggtitle(NULL)
dev.off()
null device 
          1 

Create UMAP of general cell-type labels

plot <- DimPlot(scSeurat, group.by = "general_cell_labels", label = TRUE, repel = TRUE) +
  labs(title = NULL) & NoLegend()
plot
pdf("./figures/stimulation/downsampled_general_cell_type_UMAP.pdf")
plot
dev.off()
png 
  2 

Look at tissue-type per cluster on a proportional level:

pt <- table(Idents(scSeurat), scSeurat$tissue_type)
pt <- as.data.frame(pt)
plot <- ggplot(pt, aes(x = Var1, y = Freq, fill = Var2)) +
  theme_bw(base_size = 15) +
  geom_col(position = "fill", width = 0.5) +
  xlab("Sample") +
  ylab("Proportion") +
  theme(legend.title = element_blank())
plot
pdf(file = './figures/stimulation/downsampled_tissue_type_barplot.pdf')
plot
dev.off()
png 
  2 

Calculate all DE genes

all.markers <- FindAllMarkers(scSeurat,
                              only.pos = TRUE,
                              min.pct = 0.25, 
                              logfc.threshold = 0.25,
                              recorrect_umi = FALSE)
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 2 % ~05s          
  |++                                                | 3 % ~05s          
  |+++                                               | 4 % ~05s          
  |+++                                               | 5 % ~05s          
  |++++                                              | 6 % ~05s          
  |++++                                              | 7 % ~05s          
  |+++++                                             | 8 % ~05s          
  |+++++                                             | 9 % ~05s          
  |++++++                                            | 11% ~05s          
  |++++++                                            | 12% ~04s          
  |+++++++                                           | 13% ~04s          
  |+++++++                                           | 14% ~04s          
  |++++++++                                          | 15% ~04s          
  |++++++++                                          | 16% ~04s          
  |+++++++++                                         | 17% ~04s          
  |+++++++++                                         | 18% ~04s          
  |++++++++++                                        | 19% ~04s          
  |++++++++++                                        | 20% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |++++++++++++                                      | 22% ~04s          
  |++++++++++++                                      | 23% ~04s          
  |+++++++++++++                                     | 24% ~04s          
  |+++++++++++++                                     | 25% ~04s          
  |++++++++++++++                                    | 26% ~04s          
  |++++++++++++++                                    | 27% ~04s          
  |+++++++++++++++                                   | 28% ~04s          
  |+++++++++++++++                                   | 29% ~04s          
  |++++++++++++++++                                  | 31% ~04s          
  |++++++++++++++++                                  | 32% ~04s          
  |+++++++++++++++++                                 | 33% ~03s          
  |+++++++++++++++++                                 | 34% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |++++++++++++++++++                                | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |++++++++++++++++++++                              | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |++++++++++++++++++++++                            | 42% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |+++++++++++++++++++++++                           | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |++++++++++++++++++++++++                          | 46% ~03s          
  |++++++++++++++++++++++++                          | 47% ~03s          
  |+++++++++++++++++++++++++                         | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |++++++++++++++++++++++++++++                      | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |+++++++++++++++++++++++++++++                     | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |++++++++++++++++++++++++++++++++++                | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~06s          
  |++                                                | 2 % ~06s          
  |++                                                | 4 % ~06s          
  |+++                                               | 5 % ~06s          
  |+++                                               | 6 % ~06s          
  |++++                                              | 7 % ~06s          
  |+++++                                             | 8 % ~06s          
  |+++++                                             | 10% ~06s          
  |++++++                                            | 11% ~06s          
  |++++++                                            | 12% ~06s          
  |+++++++                                           | 13% ~06s          
  |++++++++                                          | 14% ~06s          
  |++++++++                                          | 15% ~05s          
  |+++++++++                                         | 17% ~05s          
  |+++++++++                                         | 18% ~05s          
  |++++++++++                                        | 19% ~05s          
  |+++++++++++                                       | 20% ~05s          
  |+++++++++++                                       | 21% ~05s          
  |++++++++++++                                      | 23% ~05s          
  |++++++++++++                                      | 24% ~05s          
  |+++++++++++++                                     | 25% ~05s          
  |++++++++++++++                                    | 26% ~05s          
  |++++++++++++++                                    | 27% ~05s          
  |+++++++++++++++                                   | 29% ~05s          
  |+++++++++++++++                                   | 30% ~05s          
  |++++++++++++++++                                  | 31% ~04s          
  |+++++++++++++++++                                 | 32% ~04s          
  |+++++++++++++++++                                 | 33% ~04s          
  |++++++++++++++++++                                | 35% ~04s          
  |++++++++++++++++++                                | 36% ~04s          
  |+++++++++++++++++++                               | 37% ~04s          
  |++++++++++++++++++++                              | 38% ~04s          
  |++++++++++++++++++++                              | 39% ~04s          
  |+++++++++++++++++++++                             | 40% ~04s          
  |+++++++++++++++++++++                             | 42% ~04s          
  |++++++++++++++++++++++                            | 43% ~04s          
  |+++++++++++++++++++++++                           | 44% ~04s          
  |+++++++++++++++++++++++                           | 45% ~04s          
  |++++++++++++++++++++++++                          | 46% ~03s          
  |++++++++++++++++++++++++                          | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |+++++++++++++++++++++++++                         | 50% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |+++++++++++++++++++++++++++                       | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 54% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~03s          
  |++++++++++++++++++++++++++++                      | 56% ~03s          
  |+++++++++++++++++++++++++++++                     | 57% ~03s          
  |++++++++++++++++++++++++++++++                    | 58% ~03s          
  |++++++++++++++++++++++++++++++                    | 60% ~03s          
  |+++++++++++++++++++++++++++++++                   | 61% ~03s          
  |+++++++++++++++++++++++++++++++                   | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |++++++++++++++++++++++++++++++++++                | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=06s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~03s          
  |++                                                | 2 % ~03s          
  |++                                                | 4 % ~03s          
  |+++                                               | 5 % ~03s          
  |+++                                               | 6 % ~03s          
  |++++                                              | 7 % ~03s          
  |+++++                                             | 8 % ~03s          
  |+++++                                             | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |++++++                                            | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 17% ~03s          
  |+++++++++                                         | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |++++++++++++                                      | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 26% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |+++++++++++++++                                   | 29% ~02s          
  |+++++++++++++++                                   | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |++++++++++++++++++                                | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 40% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |++++++++++++++++++++++++++++                      | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 57% ~01s          
  |++++++++++++++++++++++++++++++                    | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~07s          
  |++                                                | 2 % ~07s          
  |++                                                | 3 % ~06s          
  |+++                                               | 5 % ~06s          
  |+++                                               | 6 % ~06s          
  |++++                                              | 7 % ~06s          
  |+++++                                             | 8 % ~06s          
  |+++++                                             | 9 % ~06s          
  |++++++                                            | 10% ~06s          
  |++++++                                            | 11% ~06s          
  |+++++++                                           | 13% ~06s          
  |+++++++                                           | 14% ~06s          
  |++++++++                                          | 15% ~06s          
  |+++++++++                                         | 16% ~06s          
  |+++++++++                                         | 17% ~06s          
  |++++++++++                                        | 18% ~05s          
  |++++++++++                                        | 20% ~05s          
  |+++++++++++                                       | 21% ~05s          
  |+++++++++++                                       | 22% ~05s          
  |++++++++++++                                      | 23% ~05s          
  |+++++++++++++                                     | 24% ~05s          
  |+++++++++++++                                     | 25% ~05s          
  |++++++++++++++                                    | 26% ~05s          
  |++++++++++++++                                    | 28% ~05s          
  |+++++++++++++++                                   | 29% ~05s          
  |+++++++++++++++                                   | 30% ~05s          
  |++++++++++++++++                                  | 31% ~05s          
  |+++++++++++++++++                                 | 32% ~05s          
  |+++++++++++++++++                                 | 33% ~04s          
  |++++++++++++++++++                                | 34% ~04s          
  |++++++++++++++++++                                | 36% ~04s          
  |+++++++++++++++++++                               | 37% ~04s          
  |+++++++++++++++++++                               | 38% ~04s          
  |++++++++++++++++++++                              | 39% ~04s          
  |+++++++++++++++++++++                             | 40% ~04s          
  |+++++++++++++++++++++                             | 41% ~04s          
  |++++++++++++++++++++++                            | 43% ~04s          
  |++++++++++++++++++++++                            | 44% ~04s          
  |+++++++++++++++++++++++                           | 45% ~04s          
  |+++++++++++++++++++++++                           | 46% ~04s          
  |++++++++++++++++++++++++                          | 47% ~04s          
  |+++++++++++++++++++++++++                         | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |++++++++++++++++++++++++++                        | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 53% ~03s          
  |++++++++++++++++++++++++++++                      | 54% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~03s          
  |+++++++++++++++++++++++++++++                     | 56% ~03s          
  |+++++++++++++++++++++++++++++                     | 57% ~03s          
  |++++++++++++++++++++++++++++++                    | 59% ~03s          
  |++++++++++++++++++++++++++++++                    | 60% ~03s          
  |+++++++++++++++++++++++++++++++                   | 61% ~03s          
  |++++++++++++++++++++++++++++++++                  | 62% ~03s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |++++++++++++++++++++++++++++++++++                | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=07s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 3 % ~04s          
  |++                                                | 4 % ~04s          
  |+++                                               | 5 % ~03s          
  |++++                                              | 7 % ~03s          
  |++++                                              | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |++++++                                            | 11% ~03s          
  |++++++                                            | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 24% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |++++++++++++++                                    | 26% ~03s          
  |++++++++++++++                                    | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |++++++++++++++++                                  | 30% ~03s          
  |++++++++++++++++                                  | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |+++++++++++++++++++++++++++++                     | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~09s          
  |++                                                | 2 % ~09s          
  |++                                                | 3 % ~09s          
  |+++                                               | 4 % ~09s          
  |+++                                               | 5 % ~09s          
  |++++                                              | 7 % ~09s          
  |++++                                              | 8 % ~09s          
  |+++++                                             | 9 % ~09s          
  |+++++                                             | 10% ~09s          
  |++++++                                            | 11% ~09s          
  |+++++++                                           | 12% ~09s          
  |+++++++                                           | 13% ~09s          
  |++++++++                                          | 14% ~08s          
  |++++++++                                          | 15% ~08s          
  |+++++++++                                         | 16% ~08s          
  |+++++++++                                         | 18% ~08s          
  |++++++++++                                        | 19% ~08s          
  |++++++++++                                        | 20% ~08s          
  |+++++++++++                                       | 21% ~08s          
  |+++++++++++                                       | 22% ~08s          
  |++++++++++++                                      | 23% ~08s          
  |+++++++++++++                                     | 24% ~07s          
  |+++++++++++++                                     | 25% ~07s          
  |++++++++++++++                                    | 26% ~07s          
  |++++++++++++++                                    | 27% ~07s          
  |+++++++++++++++                                   | 29% ~07s          
  |+++++++++++++++                                   | 30% ~07s          
  |++++++++++++++++                                  | 31% ~07s          
  |++++++++++++++++                                  | 32% ~07s          
  |+++++++++++++++++                                 | 33% ~07s          
  |++++++++++++++++++                                | 34% ~06s          
  |++++++++++++++++++                                | 35% ~06s          
  |+++++++++++++++++++                               | 36% ~06s          
  |+++++++++++++++++++                               | 37% ~06s          
  |++++++++++++++++++++                              | 38% ~06s          
  |++++++++++++++++++++                              | 40% ~06s          
  |+++++++++++++++++++++                             | 41% ~06s          
  |+++++++++++++++++++++                             | 42% ~06s          
  |++++++++++++++++++++++                            | 43% ~06s          
  |++++++++++++++++++++++                            | 44% ~06s          
  |+++++++++++++++++++++++                           | 45% ~05s          
  |++++++++++++++++++++++++                          | 46% ~05s          
  |++++++++++++++++++++++++                          | 47% ~05s          
  |+++++++++++++++++++++++++                         | 48% ~05s          
  |+++++++++++++++++++++++++                         | 49% ~05s          
  |++++++++++++++++++++++++++                        | 51% ~05s          
  |++++++++++++++++++++++++++                        | 52% ~05s          
  |+++++++++++++++++++++++++++                       | 53% ~05s          
  |+++++++++++++++++++++++++++                       | 54% ~05s          
  |++++++++++++++++++++++++++++                      | 55% ~04s          
  |+++++++++++++++++++++++++++++                     | 56% ~04s          
  |+++++++++++++++++++++++++++++                     | 57% ~04s          
  |++++++++++++++++++++++++++++++                    | 58% ~04s          
  |++++++++++++++++++++++++++++++                    | 59% ~04s          
  |+++++++++++++++++++++++++++++++                   | 60% ~04s          
  |+++++++++++++++++++++++++++++++                   | 62% ~04s          
  |++++++++++++++++++++++++++++++++                  | 63% ~04s          
  |++++++++++++++++++++++++++++++++                  | 64% ~04s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~03s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~03s          
  |++++++++++++++++++++++++++++++++++                | 67% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~03s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~03s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=10s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~07s          
  |++                                                | 2 % ~07s          
  |++                                                | 4 % ~06s          
  |+++                                               | 5 % ~06s          
  |+++                                               | 6 % ~06s          
  |++++                                              | 7 % ~06s          
  |+++++                                             | 8 % ~06s          
  |+++++                                             | 9 % ~06s          
  |++++++                                            | 11% ~06s          
  |++++++                                            | 12% ~06s          
  |+++++++                                           | 13% ~06s          
  |++++++++                                          | 14% ~06s          
  |++++++++                                          | 15% ~06s          
  |+++++++++                                         | 16% ~05s          
  |+++++++++                                         | 18% ~05s          
  |++++++++++                                        | 19% ~05s          
  |++++++++++                                        | 20% ~05s          
  |+++++++++++                                       | 21% ~05s          
  |++++++++++++                                      | 22% ~05s          
  |++++++++++++                                      | 24% ~05s          
  |+++++++++++++                                     | 25% ~05s          
  |+++++++++++++                                     | 26% ~05s          
  |++++++++++++++                                    | 27% ~05s          
  |+++++++++++++++                                   | 28% ~05s          
  |+++++++++++++++                                   | 29% ~05s          
  |++++++++++++++++                                  | 31% ~05s          
  |++++++++++++++++                                  | 32% ~05s          
  |+++++++++++++++++                                 | 33% ~04s          
  |++++++++++++++++++                                | 34% ~04s          
  |++++++++++++++++++                                | 35% ~04s          
  |+++++++++++++++++++                               | 36% ~04s          
  |+++++++++++++++++++                               | 38% ~04s          
  |++++++++++++++++++++                              | 39% ~04s          
  |++++++++++++++++++++                              | 40% ~04s          
  |+++++++++++++++++++++                             | 41% ~04s          
  |++++++++++++++++++++++                            | 42% ~04s          
  |++++++++++++++++++++++                            | 44% ~04s          
  |+++++++++++++++++++++++                           | 45% ~04s          
  |+++++++++++++++++++++++                           | 46% ~04s          
  |++++++++++++++++++++++++                          | 47% ~04s          
  |+++++++++++++++++++++++++                         | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |++++++++++++++++++++++++++                        | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 53% ~03s          
  |++++++++++++++++++++++++++++                      | 54% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~03s          
  |+++++++++++++++++++++++++++++                     | 56% ~03s          
  |+++++++++++++++++++++++++++++                     | 58% ~03s          
  |++++++++++++++++++++++++++++++                    | 59% ~03s          
  |++++++++++++++++++++++++++++++                    | 60% ~03s          
  |+++++++++++++++++++++++++++++++                   | 61% ~03s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~02s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=07s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 2 % ~05s          
  |++                                                | 4 % ~05s          
  |+++                                               | 5 % ~05s          
  |++++                                              | 6 % ~05s          
  |++++                                              | 7 % ~05s          
  |+++++                                             | 9 % ~05s          
  |+++++                                             | 10% ~05s          
  |++++++                                            | 11% ~05s          
  |+++++++                                           | 12% ~05s          
  |+++++++                                           | 13% ~05s          
  |++++++++                                          | 15% ~05s          
  |++++++++                                          | 16% ~04s          
  |+++++++++                                         | 17% ~04s          
  |++++++++++                                        | 18% ~04s          
  |++++++++++                                        | 20% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |+++++++++++                                       | 22% ~04s          
  |++++++++++++                                      | 23% ~04s          
  |+++++++++++++                                     | 24% ~04s          
  |+++++++++++++                                     | 26% ~04s          
  |++++++++++++++                                    | 27% ~04s          
  |+++++++++++++++                                   | 28% ~04s          
  |+++++++++++++++                                   | 29% ~04s          
  |++++++++++++++++                                  | 30% ~04s          
  |++++++++++++++++                                  | 32% ~04s          
  |+++++++++++++++++                                 | 33% ~04s          
  |++++++++++++++++++                                | 34% ~04s          
  |++++++++++++++++++                                | 35% ~04s          
  |+++++++++++++++++++                               | 37% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |+++++++++++++++++++++                             | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |++++++++++++++++++++++                            | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |++++++++++++++++++++++++                          | 46% ~03s          
  |++++++++++++++++++++++++                          | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |+++++++++++++++++++++++++                         | 50% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |+++++++++++++++++++++++++++                       | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 54% ~03s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~04s          
  |++++                                              | 7 % ~04s          
  |+++++                                             | 8 % ~04s          
  |+++++                                             | 9 % ~04s          
  |++++++                                            | 10% ~04s          
  |++++++                                            | 11% ~04s          
  |+++++++                                           | 12% ~04s          
  |+++++++                                           | 13% ~04s          
  |++++++++                                          | 14% ~04s          
  |++++++++                                          | 15% ~04s          
  |+++++++++                                         | 16% ~04s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |+++++++++++++                                     | 24% ~03s          
  |+++++++++++++                                     | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |++++++++++++++                                    | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |+++++++++++++++                                   | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |++++++++++++++++                                  | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |+++++++++++++++++                                 | 34% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |++++++++++++++++++                                | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |++++++++++++++++++++++                            | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |++++++++++++++++++++++++                          | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |+++++++++++++++++++++++++                         | 50% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |+++++++++++++++++++++++++++                       | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
Calculating cluster 9

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~05s          
  |++                                                | 2 % ~05s          
  |++                                                | 3 % ~05s          
  |+++                                               | 5 % ~05s          
  |+++                                               | 6 % ~05s          
  |++++                                              | 7 % ~05s          
  |+++++                                             | 8 % ~05s          
  |+++++                                             | 9 % ~05s          
  |++++++                                            | 10% ~05s          
  |++++++                                            | 11% ~05s          
  |+++++++                                           | 13% ~05s          
  |+++++++                                           | 14% ~04s          
  |++++++++                                          | 15% ~04s          
  |+++++++++                                         | 16% ~04s          
  |+++++++++                                         | 17% ~04s          
  |++++++++++                                        | 18% ~04s          
  |++++++++++                                        | 20% ~04s          
  |+++++++++++                                       | 21% ~04s          
  |+++++++++++                                       | 22% ~04s          
  |++++++++++++                                      | 23% ~04s          
  |+++++++++++++                                     | 24% ~04s          
  |+++++++++++++                                     | 25% ~04s          
  |++++++++++++++                                    | 26% ~04s          
  |++++++++++++++                                    | 28% ~04s          
  |+++++++++++++++                                   | 29% ~04s          
  |+++++++++++++++                                   | 30% ~04s          
  |++++++++++++++++                                  | 31% ~04s          
  |+++++++++++++++++                                 | 32% ~04s          
  |+++++++++++++++++                                 | 33% ~03s          
  |++++++++++++++++++                                | 34% ~03s          
  |++++++++++++++++++                                | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~03s          
  |+++++++++++++++++++                               | 38% ~03s          
  |++++++++++++++++++++                              | 39% ~03s          
  |+++++++++++++++++++++                             | 40% ~03s          
  |+++++++++++++++++++++                             | 41% ~03s          
  |++++++++++++++++++++++                            | 43% ~03s          
  |++++++++++++++++++++++                            | 44% ~03s          
  |+++++++++++++++++++++++                           | 45% ~03s          
  |+++++++++++++++++++++++                           | 46% ~03s          
  |++++++++++++++++++++++++                          | 47% ~03s          
  |+++++++++++++++++++++++++                         | 48% ~03s          
  |+++++++++++++++++++++++++                         | 49% ~03s          
  |++++++++++++++++++++++++++                        | 51% ~03s          
  |++++++++++++++++++++++++++                        | 52% ~03s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |+++++++++++++++++++++++++++++                     | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 61% ~02s          
  |++++++++++++++++++++++++++++++++                  | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~02s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~02s          
  |++++++++++++++++++++++++++++++++++                | 67% ~02s          
  |++++++++++++++++++++++++++++++++++                | 68% ~02s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~02s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~02s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=05s  
Calculating cluster 10

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~03s          
  |++                                                | 3 % ~03s          
  |+++                                               | 4 % ~02s          
  |+++                                               | 6 % ~02s          
  |++++                                              | 7 % ~02s          
  |+++++                                             | 8 % ~02s          
  |+++++                                             | 10% ~02s          
  |++++++                                            | 11% ~02s          
  |+++++++                                           | 13% ~02s          
  |++++++++                                          | 14% ~02s          
  |++++++++                                          | 15% ~02s          
  |+++++++++                                         | 17% ~02s          
  |++++++++++                                        | 18% ~02s          
  |++++++++++                                        | 20% ~02s          
  |+++++++++++                                       | 21% ~02s          
  |++++++++++++                                      | 23% ~02s          
  |++++++++++++                                      | 24% ~02s          
  |+++++++++++++                                     | 25% ~02s          
  |++++++++++++++                                    | 27% ~02s          
  |+++++++++++++++                                   | 28% ~02s          
  |+++++++++++++++                                   | 30% ~02s          
  |++++++++++++++++                                  | 31% ~02s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 42% ~01s          
  |++++++++++++++++++++++                            | 44% ~01s          
  |+++++++++++++++++++++++                           | 45% ~01s          
  |++++++++++++++++++++++++                          | 46% ~01s          
  |++++++++++++++++++++++++                          | 48% ~01s          
  |+++++++++++++++++++++++++                         | 49% ~01s          
  |++++++++++++++++++++++++++                        | 51% ~01s          
  |+++++++++++++++++++++++++++                       | 52% ~01s          
  |+++++++++++++++++++++++++++                       | 54% ~01s          
  |++++++++++++++++++++++++++++                      | 55% ~01s          
  |+++++++++++++++++++++++++++++                     | 56% ~01s          
  |+++++++++++++++++++++++++++++                     | 58% ~01s          
  |++++++++++++++++++++++++++++++                    | 59% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03s  
Calculating cluster 11

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~04s          
  |++++                                              | 7 % ~04s          
  |+++++                                             | 9 % ~04s          
  |+++++                                             | 10% ~04s          
  |++++++                                            | 11% ~04s          
  |+++++++                                           | 12% ~03s          
  |+++++++                                           | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 19% ~03s          
  |++++++++++                                        | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |+++++++++++++                                     | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |+++++++++++++++                                   | 28% ~03s          
  |+++++++++++++++                                   | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |+++++++++++++++++                                 | 32% ~03s          
  |+++++++++++++++++                                 | 33% ~03s          
  |++++++++++++++++++                                | 35% ~03s          
  |++++++++++++++++++                                | 36% ~03s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |+++++++++++++++++++++                             | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 44% ~02s          
  |+++++++++++++++++++++++                           | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |++++++++++++++++++++++++++++                      | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |++++++++++++++++++++++++++++++                    | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |+++++++++++++++++++++++++++++++                   | 60% ~02s          
  |+++++++++++++++++++++++++++++++                   | 62% ~02s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
Calculating cluster 12

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~10s          
  |++                                                | 2 % ~10s          
  |++                                                | 3 % ~09s          
  |+++                                               | 4 % ~09s          
  |+++                                               | 6 % ~09s          
  |++++                                              | 7 % ~09s          
  |++++                                              | 8 % ~09s          
  |+++++                                             | 9 % ~09s          
  |+++++                                             | 10% ~09s          
  |++++++                                            | 11% ~09s          
  |+++++++                                           | 12% ~09s          
  |+++++++                                           | 13% ~08s          
  |++++++++                                          | 14% ~08s          
  |++++++++                                          | 16% ~08s          
  |+++++++++                                         | 17% ~08s          
  |+++++++++                                         | 18% ~08s          
  |++++++++++                                        | 19% ~08s          
  |++++++++++                                        | 20% ~08s          
  |+++++++++++                                       | 21% ~08s          
  |++++++++++++                                      | 22% ~08s          
  |++++++++++++                                      | 23% ~07s          
  |+++++++++++++                                     | 24% ~07s          
  |+++++++++++++                                     | 26% ~07s          
  |++++++++++++++                                    | 27% ~07s          
  |++++++++++++++                                    | 28% ~07s          
  |+++++++++++++++                                   | 29% ~07s          
  |+++++++++++++++                                   | 30% ~07s          
  |++++++++++++++++                                  | 31% ~07s          
  |+++++++++++++++++                                 | 32% ~07s          
  |+++++++++++++++++                                 | 33% ~07s          
  |++++++++++++++++++                                | 34% ~06s          
  |++++++++++++++++++                                | 36% ~06s          
  |+++++++++++++++++++                               | 37% ~06s          
  |+++++++++++++++++++                               | 38% ~06s          
  |++++++++++++++++++++                              | 39% ~06s          
  |++++++++++++++++++++                              | 40% ~06s          
  |+++++++++++++++++++++                             | 41% ~06s          
  |++++++++++++++++++++++                            | 42% ~06s          
  |++++++++++++++++++++++                            | 43% ~06s          
  |+++++++++++++++++++++++                           | 44% ~05s          
  |+++++++++++++++++++++++                           | 46% ~05s          
  |++++++++++++++++++++++++                          | 47% ~05s          
  |++++++++++++++++++++++++                          | 48% ~05s          
  |+++++++++++++++++++++++++                         | 49% ~05s          
  |+++++++++++++++++++++++++                         | 50% ~05s          
  |++++++++++++++++++++++++++                        | 51% ~05s          
  |+++++++++++++++++++++++++++                       | 52% ~05s          
  |+++++++++++++++++++++++++++                       | 53% ~05s          
  |++++++++++++++++++++++++++++                      | 54% ~04s          
  |++++++++++++++++++++++++++++                      | 56% ~04s          
  |+++++++++++++++++++++++++++++                     | 57% ~04s          
  |+++++++++++++++++++++++++++++                     | 58% ~04s          
  |++++++++++++++++++++++++++++++                    | 59% ~04s          
  |++++++++++++++++++++++++++++++                    | 60% ~04s          
  |+++++++++++++++++++++++++++++++                   | 61% ~04s          
  |++++++++++++++++++++++++++++++++                  | 62% ~04s          
  |++++++++++++++++++++++++++++++++                  | 63% ~04s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~03s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~03s          
  |++++++++++++++++++++++++++++++++++                | 67% ~03s          
  |++++++++++++++++++++++++++++++++++                | 68% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~03s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~03s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 72% ~03s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 74% ~03s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~02s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~02s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~02s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~02s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=10s  
Calculating cluster 13

  |                                                  | 0 % ~calculating  
  |+                                                 | 1 % ~04s          
  |++                                                | 2 % ~04s          
  |++                                                | 3 % ~04s          
  |+++                                               | 4 % ~04s          
  |+++                                               | 5 % ~04s          
  |++++                                              | 6 % ~03s          
  |++++                                              | 7 % ~03s          
  |+++++                                             | 8 % ~03s          
  |+++++                                             | 9 % ~03s          
  |++++++                                            | 10% ~03s          
  |++++++                                            | 11% ~03s          
  |+++++++                                           | 12% ~03s          
  |+++++++                                           | 13% ~03s          
  |++++++++                                          | 14% ~03s          
  |++++++++                                          | 15% ~03s          
  |+++++++++                                         | 16% ~03s          
  |+++++++++                                         | 17% ~03s          
  |++++++++++                                        | 18% ~03s          
  |++++++++++                                        | 19% ~03s          
  |+++++++++++                                       | 20% ~03s          
  |+++++++++++                                       | 21% ~03s          
  |++++++++++++                                      | 22% ~03s          
  |++++++++++++                                      | 23% ~03s          
  |+++++++++++++                                     | 24% ~03s          
  |+++++++++++++                                     | 25% ~03s          
  |++++++++++++++                                    | 26% ~03s          
  |++++++++++++++                                    | 27% ~03s          
  |+++++++++++++++                                   | 28% ~03s          
  |+++++++++++++++                                   | 29% ~03s          
  |++++++++++++++++                                  | 30% ~03s          
  |++++++++++++++++                                  | 31% ~03s          
  |+++++++++++++++++                                 | 32% ~02s          
  |+++++++++++++++++                                 | 33% ~02s          
  |++++++++++++++++++                                | 34% ~02s          
  |++++++++++++++++++                                | 35% ~02s          
  |+++++++++++++++++++                               | 36% ~02s          
  |+++++++++++++++++++                               | 37% ~02s          
  |++++++++++++++++++++                              | 38% ~02s          
  |++++++++++++++++++++                              | 39% ~02s          
  |+++++++++++++++++++++                             | 40% ~02s          
  |+++++++++++++++++++++                             | 41% ~02s          
  |++++++++++++++++++++++                            | 42% ~02s          
  |++++++++++++++++++++++                            | 43% ~02s          
  |+++++++++++++++++++++++                           | 44% ~02s          
  |+++++++++++++++++++++++                           | 45% ~02s          
  |++++++++++++++++++++++++                          | 46% ~02s          
  |++++++++++++++++++++++++                          | 47% ~02s          
  |+++++++++++++++++++++++++                         | 48% ~02s          
  |+++++++++++++++++++++++++                         | 49% ~02s          
  |++++++++++++++++++++++++++                        | 51% ~02s          
  |++++++++++++++++++++++++++                        | 52% ~02s          
  |+++++++++++++++++++++++++++                       | 53% ~02s          
  |+++++++++++++++++++++++++++                       | 54% ~02s          
  |++++++++++++++++++++++++++++                      | 55% ~02s          
  |++++++++++++++++++++++++++++                      | 56% ~02s          
  |+++++++++++++++++++++++++++++                     | 57% ~02s          
  |+++++++++++++++++++++++++++++                     | 58% ~02s          
  |++++++++++++++++++++++++++++++                    | 59% ~02s          
  |++++++++++++++++++++++++++++++                    | 60% ~01s          
  |+++++++++++++++++++++++++++++++                   | 61% ~01s          
  |+++++++++++++++++++++++++++++++                   | 62% ~01s          
  |++++++++++++++++++++++++++++++++                  | 63% ~01s          
  |++++++++++++++++++++++++++++++++                  | 64% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
  |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
  |++++++++++++++++++++++++++++++++++                | 67% ~01s          
  |++++++++++++++++++++++++++++++++++                | 68% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
  |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
  |+++++++++++++++++++++++++++++++++++++             | 74% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
  |++++++++++++++++++++++++++++++++++++++            | 76% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~01s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++        | 84% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~01s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s  
top.markers <- all.markers %>% group_by(cluster) %>% top_n(n = 10, wt = avg_log2FC)
top.markers
write.table(all.markers,
            file = "./figures/stimulation/downsampled_cluster_markers.tsv",
            sep = "\t",
            quote = FALSE,
            row.names = FALSE)

Calculate DE genes: for each cluster, compare stim VS unstim

for (clust in levels(as.factor(Idents(scSeurat)))) {
  cells_stim <- colnames(scSeurat)[Idents(scSeurat) == clust & scSeurat$tissue_type == "6hrs_PMAIO"]
  cells_unstim <- colnames(scSeurat)[Idents(scSeurat) == clust & scSeurat$tissue_type == "6hrs_unstim"]
  markers <- RunPresto(scSeurat,
                       ident.1 = cells_stim,
                       ident.2 = cells_unstim,
                       only.pos = FALSE,
                       min.pct = 0.25,
                       logfc.threshold = 0.25,
                       recorrect_umi = FALSE)
  write.table(markers,
              file = paste("./figures/stimulation/downsampled_markers_cluster", 
                           clust ,"_stim_vs_unstim.tsv", sep = ""),
              sep = "\t",
              quote = FALSE,
              row.names = TRUE)
}

Look for T-cell signatures.

FeaturePlot(scSeurat, features = c("CD3E", "NKG7"))

FeaturePlot(scSeurat, features = c("LEF1", "XCL1;XCL2"))

FeaturePlot(scSeurat, features = c("TOX", "CD8A"))

FeaturePlot(scSeurat, features = c("CCR7"))

Look for macrophage signatures:

FeaturePlot(scSeurat, features = c("LGALS1", "TYROBP"))

FeaturePlot(scSeurat, features = c("MARCO", "C1QC"))

FeaturePlot(scSeurat, features = c("LYZ-1", "S100A8"))

FeaturePlot(scSeurat, features = c("DEFA6;DEFA4;DEFA5", "CTSS"))

FeaturePlot(scSeurat, features = c("FLT3", "S100A12"))

Look for B and plasma cell signatures

FeaturePlot(scSeurat, features = c("CD79B", "JCHAIN"))

Cluster 12 is the only cluster that is obviously dominated by the unstimulated experiments. What cells are these? Looks like they are hepatocytes. A lot of the markers are periportal, but all hepatocytes are in this cluster.

# Isolate DE genes
clust11 <- sCVdata_list$res.0.4@DEvsRest$`12`[order(sCVdata_list$res.0.4@DEvsRest$`12`$Wstat,
                                                    decreasing = TRUE), ]
rownames(clust11)[1:50]
 [1] "PAH"                                      "LOC114082496"                             "TDO2"                                     "MAT1A"                                    "GYS2"                                    
 [6] "SLCO1B3;SLCO1B3-SLCO1B7;SLCO1B7;SLCO1B1"  "FBP1"                                     "CPS1"                                     "SLC2A2"                                   "ALDOB"                                   
[11] "MTSS1"                                    "IGFBP1"                                   "CYP3A4;CYP3A7-CYP3A51P;CYP3A7-2"          "mikado.WCK01-AAH20201022-F8-rsc00143G668" "PCK1"                                    
[16] "SHMT1"                                    "CYP3A4;CYP3A7-CYP3A51P;CYP3A7"            "ARG1"                                     "CYP3A4;CYP3A7-CYP3A51P;CYP3A7-3"          "LOC107139912"                            
[21] "ALB-1"                                    "SLC38A4"                                  "LOC107139914"                             "SORBS2"                                   "TAT"                                     
[26] "C5-1"                                     "KLKB1"                                    "Slc22a19-1"                               "G6PC1"                                    "RBP4"                                    
[31] "AGMO"                                     "HSD17B11"                                 "CMBL"                                     "SLC25A13"                                 "ZBTB16"                                  
[36] "C8G"                                      "PYGL"                                     "HSD11B1"                                  "mikado.WCK01-AAH20201022-F8-rsc00060G101" "CES3"                                    
[41] "MTARC2"                                   "IDO2"                                     "AQP9"                                     "ACACB"                                    "GOT1"                                    
[46] "CFI"                                      "NR1I2"                                    "ABCB11"                                   "SOX5"                                     "BHMT2"                                   
FeaturePlot(scSeurat, features = c("PAH","PCK1"))

FeaturePlot(scSeurat, features = c("CYP2E1","FETUB"))

FeaturePlot(scSeurat, features = c("ACACB","ELOVL6"))

FeaturePlot(scSeurat, features = c("POLR2D", "ALB-1"))

Let’s look at some of the key markers that Sonya sent: IL2, IL4, IL6, IL7, IL10, IL12A, TGFB

FeaturePlot(scSeurat, features = c("IL2", "IL4"))

FeaturePlot(scSeurat, features = c("IL6", "IL6-1"))

FeaturePlot(scSeurat, features = c("IL7", "IL10"))

FeaturePlot(scSeurat, features = c("IL12A", "TGFB1"))

It’s pretty hard to see which cytokines are expressed in which samples, so I’m going to try splitting up the samples.

DimPlot(scSeurat, split.by = "tissue_type", label = TRUE) & NoLegend()
pdf(file = './figures/stimulation/downsampled_UMAP_split.pdf',
    height = 4, width = 8)
DimPlot(scSeurat, split.by = "tissue_type", label = TRUE) & NoLegend()
dev.off()
png 
  2 

Now let’s take a look at the features on this split plot.

genes <- c("IL2","IL4","IL6","IL7","IL10","IL12A","TGFB1","TGFB2","TGFB3","TNF","IL18","IL2RA","CCL5","IFNG","LIF", "CCL3L1;CCL3L3;CCL3;CCL18","CCL4L2;CCL4L1;CCL4")
for (gene in genes) {
  print(FeaturePlot(scSeurat, feature = gene, split.by = "tissue_type"))
  pdf(paste("figures/stimulation/downsampled_UMAP_split_", gene, ".pdf", sep = ""),
      height = 4, width = 8)
  print(FeaturePlot(scSeurat, feature = gene, split.by = "tissue_type"))
  dev.off()
}
Warning: All cells have the same value (0) of “IL2”

More plots

Cluster 2 looks like it generally has more IL genes expressed. Isolate DE genes for this cluster.

clust1 <- sCVdata_list$res.0.4@DEvsRest$`2`[order(sCVdata_list$res.0.4@DEvsRest$`2`$Wstat,
                                                    decreasing = TRUE), ]
cat(rownames(clust1)[1:50])
PTPRC TOX PRKCH INPP4B mikado.WCK01-AAH20201022-F8-rsc00190G443 ARID5B IKZF3 ARHGAP15 SATB1 DOCK10 TRPS1 RASA2 SAMSN1 NSD3 MBNL1 SH3KBP1 EMB SYTL3 ICOS mikado.WCK01-AAH20201022-F8-rsc00083G981 mikado.WCK01-AAH20201022-F8-rsc00275G164 THEMIS MSI2 SLAMF1 PITPNC1 NXF2;NXF2B;NXF5 SRSF7 IKZF1 RAPGEF6 STAT4 SLC38A1 RAP1A RABGAP1L ZC3HAV1 BCL2 TESPA1 APBB1IP GIMAP7 DHX8 DDX5 UBAC2 HUWE1 CD3E CTLA4 CD44 GIMAP1 RGS1 MTHFD1L RIPOR2 TANK

Visualise these genes in violin plots.

Interpretation: Now I see that IL2 and IL4 are expressed in more than just cluster 2, but it is nearly always in PMAIO. Cluster 8 is definitely where IL6 is expressed. IL7 is a bit more spread out across treatment types, but it’s definitely present in PMAIO in clusters 4, 5, and 11. Cluster 11 is plasma cells, but I’m honestly not sure of 4 and 5 - low signal hepatocytes? IL10 is in clusters 2 and 11 PMAIO. IL12A is a bit more in 4 and 5 PMAIO.

VlnPlot(scSeurat, feature = "IL2", split.by = "tissue_type") # Only in PMAIO cluster 2

VlnPlot(scSeurat, feature = "IL4", split.by = "tissue_type") # Only in PMAIO cluster 2

VlnPlot(scSeurat, feature = "IL6", split.by = "tissue_type") # Stronger in endo and mesem PMAIO

VlnPlot(scSeurat, feature = "IL6-1", split.by = "tissue_type") # No signal

VlnPlot(scSeurat, feature = "IL7", split.by = "tissue_type") # More in PMAIO cluster 4/5

VlnPlot(scSeurat, feature = "IL10", split.by = "tissue_type") # More in PMAIO cluster 2

VlnPlot(scSeurat, feature = "IL12A", split.by = "tissue_type") # A bit more in 1,4,5

VlnPlot(scSeurat, feature = "TGFB1", split.by = "tissue_type") # Pretty even across all

VlnPlot(scSeurat, feature = "TNF", split.by = "tissue_type")

Make Violin plots with ggplot

genes <- c("IL2","IL4","IL6","IL7","IL10","IL12A","TGFB1","TGFB2","TGFB3","TNF","IL18","IL2RA","CCL5","IFNG","LIF","CCL3L1;CCL3L3;CCL3;CCL18","CCL4L2;CCL4L1;CCL4")
for(gene in genes) {
  vln_df = data.frame(gene = scSeurat[["RNA"]]@data[gene,], 
                      Cluster = Idents(scSeurat), 
                      tissue_type = scSeurat$tissue_type)
  plot <- ggplot(vln_df, aes(x = Cluster, y = gene)) + 
    geom_violin(aes(fill = tissue_type), trim=TRUE, scale = "width") +
    ylab(gene) +
    theme_bw()
  print(plot)
  pdf(file = paste("figures/stimulation/downsampled_vlnPlot_split_", gene, ".pdf", sep = ""))
  print(plot) # Need print function because R doesn't autoprint in loops
  dev.off()
}

Looking for more genes

gene <- "IL18"
vln_df = data.frame(gene = scSeurat[["RNA"]]@data[gene,], 
                      Cluster = Idents(scSeurat), 
                      tissue_type = scSeurat$tissue_type)
  plot <- ggplot(vln_df, aes(x = Cluster, y = gene)) + 
    geom_violin(aes(fill = tissue_type), trim=TRUE, scale = "width") +
    ylab(gene) +
    theme_bw()
  print(plot)

Make heatmap with select genes

genes <- c("IL2","IL4","IL6","IL7","IL10","IL12A","TGFB1","TGFB2","TGFB3","TNF","IL18","IL2RA","CCL5","IFNG","LIF","CCL3L1;CCL3L3;CCL3;CCL18","CCL4L2;CCL4L1;CCL4")
DoHeatmap(scSeurat, features = genes, group.by = "integrated_snn_res.0.4",
          size = 3, 
          angle = 90, assay = "RNA", slot = "data") +
  NoLegend() +
  theme(text = element_text(size = 7))

DotPlot(scSeurat,
        assay = "RNA",
        features = genes,
        group.by = "integrated_snn_res.0.4",
        split.by =  "tissue_type")

DotPlot(scSeurat,
        assay = "RNA",
        features = genes,
        group.by = "tissue_type")
Warning: Scaling data with a low number of groups may produce misleading results

DotPlot(scSeurat,
        assay = "RNA",
        features = genes,
        group.by = "integrated_snn_res.0.4")

Perform DE test on T-cells from PMAIO vs unstim T-cells. I see TNF, IL2RA, but I also see hepatocyte genes like ALB-1, STAT3

cat(row.names(de_results)[1:100], sep = " ")
LOC107134468 CCL4L2;CCL4L1;CCL4 mikado.WCK01-AAH20201022-F8-rsc00073G191 MTHFD1L NFKB1 NXF2;NXF2B;NXF5 CCND3 IFNG SATB1 SKAP1 ARID5B mikado.WCK01-AAH20201022-F8-rsc00334G1 CCL3L1;CCL3L3;CCL3;CCL18 SLAMF1 CD200 GIMAP7 LOC114086011-6 GBP7;GBP4 CBLB TRAF3IP3 NR4A3 ALB-1 TNFRSF9 SLC25A26 SYNE1 STAT3 UTRN HUWE1 PDE7A IL2RA PTPRCAP APOA1 TNRC6B Ifi214;Ifi209 ETS1 ANKRD44 MAPK6 PDE3B RESF1 CD27 mikado.WCK01-AAH20201022-F8-rsc00138G153 PICALM JARID2 MDN1 CHIC1 CCL3L1;CCL3L3;CCL3;CCL18-2 CKLF;CKLF-CMTM1 HECA FOXN3 MED13L SEC23B ZEB2 AMN1 CD3G SEC14L1 BATF LNPEP IRF4 ALB LOC107134769-1 IQGAP2 LOC114086011-12 SERPINA1 mikado.WCK01-AAH20201022-F8-rsc00234G885 TMEM156 STK4 ATP8A1 PECAM1 FAM13A MTHFD2 CELF2 SAMSN1 NUCB2 GIMAP1 SND1 VMP1 MLLT3 ASAP1 RBP4 TNF CRTAM FYN ACTB mikado.WCK01-AAH20201022-F8-rsc00190G443 PPP3CC HBS1L TTC27 B4GALT5 DDX5 ARHGDIB LAT CXCL2;CXCL3;CXCL1-1 ITM2B SENP7 DOCK8 RIPOR2 APBB1IP TRAF3 SAMHD1 CD99
LS0tCnRpdGxlOiAiU3RpbXVsYXRpb24gZXhwZXJpbWVudHMiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgZGZfcHJpbnQ6IHBhZ2VkCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAogIHBkZl9kb2N1bWVudDogZGVmYXVsdAotLS0KCkFuYWx5c2lzIG9mIHN0aW11bGF0aW9uIGV4cGVyaW1lbnRzLgoKYGBge3J9CmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoc2NDbHVzdFZpeikKbGlicmFyeShTZXVyYXRXcmFwcGVycykKYGBgCgpMb2FkIGludGVncmF0ZWQgb2JqZWN0LiBUaGlzIG9iamVjdCBoYXMgYmVlbiBpbnRlZ3JhdGVkIHdpdGggQ0NBLCBiZWNhdXNlIHRoZXJlIHdhcyBsb3RzIG9mIGJhdGNoIGVmZmVjdCBiZXR3ZWVuIHRoZSAwaHIgdGlzc3VlIGFuZCB0aGUgb3RoZXIgdHdvIGV4cGVyaW1lbnRzICh3aGljaCBtZXJnZWQgcXVpdGUgd2VsbCkuCgpgYGB7cn0KbG9hZCgifi9Ecm9wYm94L1pvZS9zY2ZfdmVyc2lvbi9hbmFseXNpcy9oZWFsdGh5X3NjL3NldXJhdF9vYmplY3RzL25vX2Ryb3BsZXRRQy8zMzkxL2ludGVncmF0ZWRfMzM5MV9zdGltdWxhdGlvbl9wbWFpb191bnN0aW1fZG93bnNhbXBsZWRfY2NhX2thbmNob3I1X3NjQ2x1c3RWaXouUkRhdGEiKQojIFNldCBpZGVudGl0eQpJZGVudHMoc2NTZXVyYXQpIDwtICJpbnRlZ3JhdGVkX3Nubl9yZXMuMC40IgpgYGAKCkNoZWNrIG91dCB0aGUgVU1BUCBvZiBjbHVzdGVycywgb3JpZ2luYWwgaWRlbnRpdGllcywgYW5kIHJlZmluZWQgU0NJTkEgbGFiZWxzLgoKYGBge3J9CkRpbVBsb3Qoc2NTZXVyYXQsIGxhYmVsID0gVFJVRSkKRGltUGxvdChzY1NldXJhdCwgZ3JvdXAuYnkgPSAidGlzc3VlX3R5cGUiLCBsYWJlbCA9IEZBTFNFKQpEaW1QbG90KHNjU2V1cmF0LCBncm91cC5ieSA9ICJzY2luYV9sYWJlbHMiLCBsYWJlbCA9IFRSVUUpICYgTm9MZWdlbmQoKQpgYGAKCmBgYHtyfQpwZGYoZmlsZSA9ICcuL2ZpZ3VyZXMvc3RpbXVsYXRpb24vZG93bnNhbXBsZWRfVU1BUC5wZGYnKQpEaW1QbG90KHNjU2V1cmF0LCBsYWJlbCA9IFRSVUUpCmRldi5vZmYoKQpwZGYoZmlsZSA9ICcuL2ZpZ3VyZXMvc3RpbXVsYXRpb24vZG93bnNhbXBsZWRfdGlzc3VlX3R5cGVfVU1BUC5wZGYnKQpEaW1QbG90KHNjU2V1cmF0LCBncm91cC5ieSA9ICJ0aXNzdWVfdHlwZSIpICsKICBnZ3RpdGxlKE5VTEwpCmRldi5vZmYoKQpgYGAKCkNyZWF0ZSBVTUFQIG9mIGdlbmVyYWwgY2VsbC10eXBlIGxhYmVscwoKYGBge3J9CnBsb3QgPC0gRGltUGxvdChzY1NldXJhdCwgZ3JvdXAuYnkgPSAiZ2VuZXJhbF9jZWxsX2xhYmVscyIsIGxhYmVsID0gVFJVRSwgcmVwZWwgPSBUUlVFKSArCiAgbGFicyh0aXRsZSA9IE5VTEwpICYgTm9MZWdlbmQoKQpwbG90CnBkZigiLi9maWd1cmVzL3N0aW11bGF0aW9uL2Rvd25zYW1wbGVkX2dlbmVyYWxfY2VsbF90eXBlX1VNQVAucGRmIikKcGxvdApkZXYub2ZmKCkKYGBgCgoKTG9vayBhdCB0aXNzdWUtdHlwZSBwZXIgY2x1c3RlciBvbiBhIHByb3BvcnRpb25hbCBsZXZlbDoKCmBgYHtyfQpwdCA8LSB0YWJsZShJZGVudHMoc2NTZXVyYXQpLCBzY1NldXJhdCR0aXNzdWVfdHlwZSkKcHQgPC0gYXMuZGF0YS5mcmFtZShwdCkKcGxvdCA8LSBnZ3Bsb3QocHQsIGFlcyh4ID0gVmFyMSwgeSA9IEZyZXEsIGZpbGwgPSBWYXIyKSkgKwogIHRoZW1lX2J3KGJhc2Vfc2l6ZSA9IDE1KSArCiAgZ2VvbV9jb2wocG9zaXRpb24gPSAiZmlsbCIsIHdpZHRoID0gMC41KSArCiAgeGxhYigiU2FtcGxlIikgKwogIHlsYWIoIlByb3BvcnRpb24iKSArCiAgdGhlbWUobGVnZW5kLnRpdGxlID0gZWxlbWVudF9ibGFuaygpKQpwbG90CnBkZihmaWxlID0gJy4vZmlndXJlcy9zdGltdWxhdGlvbi9kb3duc2FtcGxlZF90aXNzdWVfdHlwZV9iYXJwbG90LnBkZicpCnBsb3QKZGV2Lm9mZigpCmBgYAoKQ2FsY3VsYXRlIGFsbCBERSBnZW5lcwoKYGBge3J9CmFsbC5tYXJrZXJzIDwtIEZpbmRBbGxNYXJrZXJzKHNjU2V1cmF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5LnBvcyA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbi5wY3QgPSAwLjI1LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmMudGhyZXNob2xkID0gMC4yNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JyZWN0X3VtaSA9IEZBTFNFKQp0b3AubWFya2VycyA8LSBhbGwubWFya2VycyAlPiUgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIHRvcF9uKG4gPSAxMCwgd3QgPSBhdmdfbG9nMkZDKQp0b3AubWFya2Vycwp3cml0ZS50YWJsZShhbGwubWFya2VycywKICAgICAgICAgICAgZmlsZSA9ICIuL2ZpZ3VyZXMvc3RpbXVsYXRpb24vZG93bnNhbXBsZWRfY2x1c3Rlcl9tYXJrZXJzLnRzdiIsCiAgICAgICAgICAgIHNlcCA9ICJcdCIsCiAgICAgICAgICAgIHF1b3RlID0gRkFMU0UsCiAgICAgICAgICAgIHJvdy5uYW1lcyA9IEZBTFNFKQpgYGAKCkNhbGN1bGF0ZSBERSBnZW5lczogZm9yIGVhY2ggY2x1c3RlciwgY29tcGFyZSBzdGltIFZTIHVuc3RpbQoKYGBge3J9CmZvciAoY2x1c3QgaW4gbGV2ZWxzKGFzLmZhY3RvcihJZGVudHMoc2NTZXVyYXQpKSkpIHsKICBjZWxsc19zdGltIDwtIGNvbG5hbWVzKHNjU2V1cmF0KVtJZGVudHMoc2NTZXVyYXQpID09IGNsdXN0ICYgc2NTZXVyYXQkdGlzc3VlX3R5cGUgPT0gIjZocnNfUE1BSU8iXQogIGNlbGxzX3Vuc3RpbSA8LSBjb2xuYW1lcyhzY1NldXJhdClbSWRlbnRzKHNjU2V1cmF0KSA9PSBjbHVzdCAmIHNjU2V1cmF0JHRpc3N1ZV90eXBlID09ICI2aHJzX3Vuc3RpbSJdCiAgbWFya2VycyA8LSBSdW5QcmVzdG8oc2NTZXVyYXQsCiAgICAgICAgICAgICAgICAgICAgICAgaWRlbnQuMSA9IGNlbGxzX3N0aW0sCiAgICAgICAgICAgICAgICAgICAgICAgaWRlbnQuMiA9IGNlbGxzX3Vuc3RpbSwKICAgICAgICAgICAgICAgICAgICAgICBvbmx5LnBvcyA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgIG1pbi5wY3QgPSAwLjI1LAogICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZjLnRocmVzaG9sZCA9IDAuMjUsCiAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JyZWN0X3VtaSA9IEZBTFNFKQogIHdyaXRlLnRhYmxlKG1hcmtlcnMsCiAgICAgICAgICAgICAgZmlsZSA9IHBhc3RlKCIuL2ZpZ3VyZXMvc3RpbXVsYXRpb24vZG93bnNhbXBsZWRfbWFya2Vyc19jbHVzdGVyIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ICwiX3N0aW1fdnNfdW5zdGltLnRzdiIsIHNlcCA9ICIiKSwKICAgICAgICAgICAgICBzZXAgPSAiXHQiLAogICAgICAgICAgICAgIHF1b3RlID0gRkFMU0UsCiAgICAgICAgICAgICAgcm93Lm5hbWVzID0gVFJVRSkKfQpgYGAKCkxvb2sgZm9yIFQtY2VsbCBzaWduYXR1cmVzLgoKYGBge3J9CkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlcyA9IGMoIkNEM0UiLCAiTktHNyIpKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZXMgPSBjKCJMRUYxIiwgIlhDTDE7WENMMiIpKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZXMgPSBjKCJUT1giLCAiQ0Q4QSIpKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZXMgPSBjKCJDQ1I3IikpCmBgYAoKTG9vayBmb3IgbWFjcm9waGFnZSBzaWduYXR1cmVzOgoKYGBge3J9CkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlcyA9IGMoIkxHQUxTMSIsICJUWVJPQlAiKSkKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiTUFSQ08iLCAiQzFRQyIpKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZXMgPSBjKCJMWVotMSIsICJTMTAwQTgiKSkKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiREVGQTY7REVGQTQ7REVGQTUiLCAiQ1RTUyIpKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZXMgPSBjKCJGTFQzIiwgIlMxMDBBMTIiKSkKYGBgCgpMb29rIGZvciBCIGFuZCBwbGFzbWEgY2VsbCBzaWduYXR1cmVzCgpgYGB7cn0KRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiQ0Q3OUIiLCAiSkNIQUlOIikpCmBgYAoKCkNsdXN0ZXIgMTIgaXMgdGhlIG9ubHkgY2x1c3RlciB0aGF0IGlzIG9idmlvdXNseSBkb21pbmF0ZWQgYnkgdGhlIHVuc3RpbXVsYXRlZCBleHBlcmltZW50cy4gV2hhdCBjZWxscyBhcmUgdGhlc2U/IExvb2tzIGxpa2UgdGhleSBhcmUgaGVwYXRvY3l0ZXMuIEEgbG90IG9mIHRoZSBtYXJrZXJzIGFyZSBwZXJpcG9ydGFsLCBidXQgYWxsIGhlcGF0b2N5dGVzIGFyZSBpbiB0aGlzIGNsdXN0ZXIuCgpgYGB7cn0KIyBJc29sYXRlIERFIGdlbmVzCmNsdXN0MTEgPC0gc0NWZGF0YV9saXN0JHJlcy4wLjRAREV2c1Jlc3QkYDEyYFtvcmRlcihzQ1ZkYXRhX2xpc3QkcmVzLjAuNEBERXZzUmVzdCRgMTJgJFdzdGF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVhc2luZyA9IFRSVUUpLCBdCnJvd25hbWVzKGNsdXN0MTEpWzE6NTBdCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlcyA9IGMoIlBBSCIsIlBDSzEiKSkKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiQ1lQMkUxIiwiRkVUVUIiKSkKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiQUNBQ0IiLCJFTE9WTDYiKSkKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmVzID0gYygiUE9MUjJEIiwgIkFMQi0xIikpCmBgYAoKTGV0J3MgbG9vayBhdCBzb21lIG9mIHRoZSBrZXkgbWFya2VycyB0aGF0IFNvbnlhIHNlbnQ6IElMMiwgSUw0LCBJTDYsIElMNywgSUwxMCwgSUwxMkEsIFRHRkIKCmBgYHtyfQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZXMgPSBjKCJJTDIiLCAiSUw0IikpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlcyA9IGMoIklMNiIsICJJTDYtMSIpKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZXMgPSBjKCJJTDciLCAiSUwxMCIpKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZXMgPSBjKCJJTDEyQSIsICJUR0ZCMSIpKQpgYGAKCkl0J3MgcHJldHR5IGhhcmQgdG8gc2VlIHdoaWNoIGN5dG9raW5lcyBhcmUgZXhwcmVzc2VkIGluIHdoaWNoIHNhbXBsZXMsIHNvIEknbSBnb2luZyB0byB0cnkgc3BsaXR0aW5nIHVwIHRoZSBzYW1wbGVzLgoKYGBge3J9CkRpbVBsb3Qoc2NTZXVyYXQsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIiwgbGFiZWwgPSBUUlVFKSAmIE5vTGVnZW5kKCkKcGRmKGZpbGUgPSAnLi9maWd1cmVzL3N0aW11bGF0aW9uL2Rvd25zYW1wbGVkX1VNQVBfc3BsaXQucGRmJywKICAgIGhlaWdodCA9IDQsIHdpZHRoID0gOCkKRGltUGxvdChzY1NldXJhdCwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiLCBsYWJlbCA9IFRSVUUpICYgTm9MZWdlbmQoKQpkZXYub2ZmKCkKYGBgCgpOb3cgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGZlYXR1cmVzIG9uIHRoaXMgc3BsaXQgcGxvdC4KCmBgYHtyfQpnZW5lcyA8LSBjKCJJTDIiLCJJTDQiLCJJTDYiLCJJTDciLCJJTDEwIiwiSUwxMkEiLCJUR0ZCMSIsIlRHRkIyIiwiVEdGQjMiLCJUTkYiLCJJTDE4IiwiSUwyUkEiLCJDQ0w1IiwiSUZORyIsIkxJRiIsICJDQ0wzTDE7Q0NMM0wzO0NDTDM7Q0NMMTgiLCJDQ0w0TDI7Q0NMNEwxO0NDTDQiKQpmb3IgKGdlbmUgaW4gZ2VuZXMpIHsKICBwcmludChGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9IGdlbmUsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikpCiAgcGRmKHBhc3RlKCJmaWd1cmVzL3N0aW11bGF0aW9uL2Rvd25zYW1wbGVkX1VNQVBfc3BsaXRfIiwgZ2VuZSwgIi5wZGYiLCBzZXAgPSAiIiksCiAgICAgIGhlaWdodCA9IDQsIHdpZHRoID0gOCkKICBwcmludChGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9IGdlbmUsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikpCiAgZGV2Lm9mZigpCn0KYGBgCgpNb3JlIHBsb3RzCgpgYGB7cn0KRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwxNSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwxNiIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwxN0IiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMNlNUIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDMxUkEiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMN1IiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMN1ItMSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwxN0QiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMNVJBIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKSAKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwxN1JFIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKSAKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwxN1JDIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDE3QyIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwzNCIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUw0STEiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMTEiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMOVIiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMNFIiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMjFSIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDI3Iiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTEsiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMThCUCIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwxMFJBIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDMiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIkNTRjIiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklGTksiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMOSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwxMyIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiT1NNIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJMSUYiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIlNUQVQxIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJTVEFUNCIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUw0Iiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDRJMSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiQ0Q2OSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiVExSNyIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSExBLURSQSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiSUwxMkEiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIlRMUjIiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpCkZlYXR1cmVQbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIk5GS0IxIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJBQ1RCIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJQVFBSQyIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiQ0QzRSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKRmVhdHVyZVBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiVEJQIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpGZWF0dXJlUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJTREhBIiwgc3BsaXQuYnkgPSAidGlzc3VlX3R5cGUiKQpgYGAKCgpDbHVzdGVyIDIgbG9va3MgbGlrZSBpdCBnZW5lcmFsbHkgaGFzIG1vcmUgSUwgZ2VuZXMgZXhwcmVzc2VkLiBJc29sYXRlIERFIGdlbmVzIGZvciB0aGlzIGNsdXN0ZXIuCgpgYGB7cn0KY2x1c3QxIDwtIHNDVmRhdGFfbGlzdCRyZXMuMC40QERFdnNSZXN0JGAyYFtvcmRlcihzQ1ZkYXRhX2xpc3QkcmVzLjAuNEBERXZzUmVzdCRgMmAkV3N0YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNyZWFzaW5nID0gVFJVRSksIF0KY2F0KHJvd25hbWVzKGNsdXN0MSlbMTo1MF0pCmBgYAoKVmlzdWFsaXNlIHRoZXNlIGdlbmVzIGluIHZpb2xpbiBwbG90cy4KCioqSW50ZXJwcmV0YXRpb24qKjogTm93IEkgc2VlIHRoYXQgSUwyIGFuZCBJTDQgYXJlIGV4cHJlc3NlZCBpbiBtb3JlIHRoYW4ganVzdCBjbHVzdGVyIDIsIGJ1dCBpdCBpcyBuZWFybHkgYWx3YXlzIGluIFBNQUlPLiBDbHVzdGVyIDggaXMgZGVmaW5pdGVseSB3aGVyZSBJTDYgaXMgZXhwcmVzc2VkLiBJTDcgaXMgYSBiaXQgbW9yZSBzcHJlYWQgb3V0IGFjcm9zcyB0cmVhdG1lbnQgdHlwZXMsIGJ1dCBpdCdzIGRlZmluaXRlbHkgcHJlc2VudCBpbiBQTUFJTyBpbiBjbHVzdGVycyA0LCA1LCBhbmQgMTEuIENsdXN0ZXIgMTEgaXMgcGxhc21hIGNlbGxzLCBidXQgSSdtIGhvbmVzdGx5IG5vdCBzdXJlIG9mIDQgYW5kIDUgLSBsb3cgc2lnbmFsIGhlcGF0b2N5dGVzPyBJTDEwIGlzIGluIGNsdXN0ZXJzIDIgYW5kIDExIFBNQUlPLiBJTDEyQSBpcyBhIGJpdCBtb3JlIGluIDQgYW5kIDUgUE1BSU8uCgpgYGB7cn0KVmxuUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDIiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpICMgT25seSBpbiBQTUFJTyBjbHVzdGVyIDIKVmxuUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDQiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpICMgT25seSBpbiBQTUFJTyBjbHVzdGVyIDIKVmxuUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDYiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpICMgU3Ryb25nZXIgaW4gZW5kbyBhbmQgbWVzZW0gUE1BSU8KVmxuUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDYtMSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikgIyBObyBzaWduYWwKVmxuUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDciLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpICMgTW9yZSBpbiBQTUFJTyBjbHVzdGVyIDQvNQpWbG5QbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIklMMTAiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpICMgTW9yZSBpbiBQTUFJTyBjbHVzdGVyIDIKVmxuUGxvdChzY1NldXJhdCwgZmVhdHVyZSA9ICJJTDEyQSIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikgIyBBIGJpdCBtb3JlIGluIDEsNCw1ClZsblBsb3Qoc2NTZXVyYXQsIGZlYXR1cmUgPSAiVEdGQjEiLCBzcGxpdC5ieSA9ICJ0aXNzdWVfdHlwZSIpICMgUHJldHR5IGV2ZW4gYWNyb3NzIGFsbApWbG5QbG90KHNjU2V1cmF0LCBmZWF0dXJlID0gIlRORiIsIHNwbGl0LmJ5ID0gInRpc3N1ZV90eXBlIikKYGBgCgpNYWtlIFZpb2xpbiBwbG90cyB3aXRoIGdncGxvdAoKYGBge3J9CmdlbmVzIDwtIGMoIklMMiIsIklMNCIsIklMNiIsIklMNyIsIklMMTAiLCJJTDEyQSIsIlRHRkIxIiwiVEdGQjIiLCJUR0ZCMyIsIlRORiIsIklMMTgiLCJJTDJSQSIsIkNDTDUiLCJJRk5HIiwiTElGIiwiQ0NMM0wxO0NDTDNMMztDQ0wzO0NDTDE4IiwiQ0NMNEwyO0NDTDRMMTtDQ0w0IikKZm9yKGdlbmUgaW4gZ2VuZXMpIHsKICB2bG5fZGYgPSBkYXRhLmZyYW1lKGdlbmUgPSBzY1NldXJhdFtbIlJOQSJdXUBkYXRhW2dlbmUsXSwgCiAgICAgICAgICAgICAgICAgICAgICBDbHVzdGVyID0gSWRlbnRzKHNjU2V1cmF0KSwgCiAgICAgICAgICAgICAgICAgICAgICB0aXNzdWVfdHlwZSA9IHNjU2V1cmF0JHRpc3N1ZV90eXBlKQogIHBsb3QgPC0gZ2dwbG90KHZsbl9kZiwgYWVzKHggPSBDbHVzdGVyLCB5ID0gZ2VuZSkpICsgCiAgICBnZW9tX3Zpb2xpbihhZXMoZmlsbCA9IHRpc3N1ZV90eXBlKSwgdHJpbT1UUlVFLCBzY2FsZSA9ICJ3aWR0aCIpICsKICAgIHlsYWIoZ2VuZSkgKwogICAgdGhlbWVfYncoKQogIHByaW50KHBsb3QpCiAgcGRmKGZpbGUgPSBwYXN0ZSgiZmlndXJlcy9zdGltdWxhdGlvbi9kb3duc2FtcGxlZF92bG5QbG90X3NwbGl0XyIsIGdlbmUsICIucGRmIiwgc2VwID0gIiIpKQogIHByaW50KHBsb3QpICMgTmVlZCBwcmludCBmdW5jdGlvbiBiZWNhdXNlIFIgZG9lc24ndCBhdXRvcHJpbnQgaW4gbG9vcHMKICBkZXYub2ZmKCkKfQpgYGAKCkxvb2tpbmcgZm9yIG1vcmUgZ2VuZXMKCmBgYHtyfQpnZW5lIDwtICJJTDE4Igp2bG5fZGYgPSBkYXRhLmZyYW1lKGdlbmUgPSBzY1NldXJhdFtbIlJOQSJdXUBkYXRhW2dlbmUsXSwgCiAgICAgICAgICAgICAgICAgICAgQ2x1c3RlciA9IElkZW50cyhzY1NldXJhdCksIAogICAgICAgICAgICAgICAgICAgIHRpc3N1ZV90eXBlID0gc2NTZXVyYXQkdGlzc3VlX3R5cGUpCnBsb3QgPC0gZ2dwbG90KHZsbl9kZiwgYWVzKHggPSBDbHVzdGVyLCB5ID0gZ2VuZSkpICsgCiAgZ2VvbV92aW9saW4oYWVzKGZpbGwgPSB0aXNzdWVfdHlwZSksIHRyaW09VFJVRSwgc2NhbGUgPSAid2lkdGgiKSArCiAgeWxhYihnZW5lKSArCiAgdGhlbWVfYncoKQpwcmludChwbG90KQpgYGAKCk1ha2UgaGVhdG1hcCB3aXRoIHNlbGVjdCBnZW5lcwoKYGBge3J9CmdlbmVzIDwtIGMoIklMMiIsIklMNCIsIklMNiIsIklMNyIsIklMMTAiLCJJTDEyQSIsIlRHRkIxIiwiVEdGQjIiLCJUR0ZCMyIsIlRORiIsIklMMTgiLCJJTDJSQSIsIkNDTDUiLCJJRk5HIiwiTElGIiwiQ0NMM0wxO0NDTDNMMztDQ0wzO0NDTDE4IiwiQ0NMNEwyO0NDTDRMMTtDQ0w0IikKRG9IZWF0bWFwKHNjU2V1cmF0LCBmZWF0dXJlcyA9IGdlbmVzLCBncm91cC5ieSA9ICJpbnRlZ3JhdGVkX3Nubl9yZXMuMC40IiwKICAgICAgICAgIHNpemUgPSAzLCAKICAgICAgICAgIGFuZ2xlID0gOTAsIGFzc2F5ID0gIlJOQSIsIHNsb3QgPSAiZGF0YSIpICsKICBOb0xlZ2VuZCgpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA3KSkKRG90UGxvdChzY1NldXJhdCwKICAgICAgICBhc3NheSA9ICJSTkEiLAogICAgICAgIGZlYXR1cmVzID0gZ2VuZXMsCiAgICAgICAgZ3JvdXAuYnkgPSAiaW50ZWdyYXRlZF9zbm5fcmVzLjAuNCIsCiAgICAgICAgc3BsaXQuYnkgPSAgInRpc3N1ZV90eXBlIikKRG90UGxvdChzY1NldXJhdCwKICAgICAgICBhc3NheSA9ICJSTkEiLAogICAgICAgIGZlYXR1cmVzID0gZ2VuZXMsCiAgICAgICAgZ3JvdXAuYnkgPSAidGlzc3VlX3R5cGUiKQpEb3RQbG90KHNjU2V1cmF0LAogICAgICAgIGFzc2F5ID0gIlJOQSIsCiAgICAgICAgZmVhdHVyZXMgPSBnZW5lcywKICAgICAgICBncm91cC5ieSA9ICJpbnRlZ3JhdGVkX3Nubl9yZXMuMC40IikKYGBgCgoKUGVyZm9ybSBERSB0ZXN0IG9uIFQtY2VsbHMgZnJvbSBQTUFJTyB2cyB1bnN0aW0gVC1jZWxscy4gSSBzZWUgKlRORiwgSUwyUkEqLCBidXQgSSBhbHNvIHNlZSBoZXBhdG9jeXRlIGdlbmVzIGxpa2UgKkFMQi0xLCBTVEFUMyoKCmBgYHtyfQojIEZldGNoIGNlbGxzIHRvIGZpbmQgb3V0IHJlbGV2YW50IGNlbGwgYmFyY29kZXMKYmFyY29kZV9kZiA8LSBGZXRjaERhdGEoc2NTZXVyYXQsIHZhcnMgPSBjKCJ0aXNzdWVfdHlwZSIsICJpbnRlZ3JhdGVkX3Nubl9yZXMuMC40IikpCmJhcmNvZGVfZGYkYmFyY29kZSA8LSByb3duYW1lcyhiYXJjb2RlX2RmKQojIEZpbHRlciBvbiBkYXRhIHN1YnNldHMgYW5kIHB1bGwgYmFyY29kZSBuYW1lcwpjZWxsczEgPC0gYmFyY29kZV9kZiAlPiUKICBmaWx0ZXIodGlzc3VlX3R5cGUgPT0gIjZocnNfUE1BSU8iKSAlPiUKICBmaWx0ZXIoaW50ZWdyYXRlZF9zbm5fcmVzLjAuNCAlaW4lIGMoMiw2KSkgJT4lCiAgcHVsbChiYXJjb2RlKQpjZWxsczIgPC0gYmFyY29kZV9kZiAlPiUKICBmaWx0ZXIodGlzc3VlX3R5cGUgPT0gIjZocnNfdW5zdGltIikgJT4lCiAgZmlsdGVyKGludGVncmF0ZWRfc25uX3Jlcy4wLjQgJWluJSBjKDIsNikpICU+JQogIHB1bGwoYmFyY29kZSkKIyBQcmVwIGZvciBERSB0ZXN0aW5nCnNjU2V1cmF0IDwtIFByZXBTQ1RGaW5kTWFya2VycyhzY1NldXJhdCkKIyBQZXJmb3JtIERFIHRlc3QKZGVfcmVzdWx0cyA8LSBGaW5kTWFya2VycyhzY1NldXJhdCwKICAgICAgICAgICAgaWRlbnQuMSA9IGNlbGxzMSwKICAgICAgICAgICAgaWRlbnQuMiA9IGNlbGxzMikKY2F0KHJvdy5uYW1lcyhkZV9yZXN1bHRzKVsxOjEwMF0sIHNlcCA9ICIgIikKYGBgCgoK